package com.example.week9_advanceui;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class SpinnerActivity extends AppCompatActivity {


    //定义学习场所下拉列表需要显示的文本数组,文本数组可以直接作为Adapter的数据来源

    private String[] learningSiteArray={"逸夫图书馆","承先图书馆","综合楼","四教","五教","六教"};

    //定义运动场所对话框列表需要显示的文本数组,该数组内容将由资源文件填充
    private String[] playSiteArray;

    //用于显示结果的文本框组件
    private TextView resultText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);

        resultText=(TextView)findViewById(R.id.sp_result);
        //初始化下拉模式的列表框
        intiDropdownSpinner();
        //初始化对话框样式的列表框
        intiDialogSpinner();
    }

    //初始化下拉模式的列表框
     private void intiDropdownSpinner()
     {
         //初始化：从布局文件中获取名叫sp_dropdown的下拉框
         Spinner sp_dropdown=(Spinner) findViewById(R.id.sp_dropdown);
         //设置下拉框的标题(对话框才显示标题，下拉模式不显示标题)
         sp_dropdown.setPrompt("请选择学习场所");

         //先声明一个下拉列表的数据适配器，指定下拉列表
         ArrayAdapter<String> learingSiteAdapter=new ArrayAdapter<String>(this, R.layout.item_select,learningSiteArray);

        /*上面的构造方法指定列表数据来自数组learningSiteArray，用布局文件item_select.xml显示每一行publicArrayAdapter(Contextcontext,intresource,T[]objects)参数：contextContext:Thecurrentcontext.Thisvaluecannotbenull.resourceint:TheresourceIDforalayoutfilecontainingaTextViewtousewheninstantiatingviews.(用于显示列表项中每一行的布局文件，其中包含一个TextView)objectsT:TheobjectstorepresentintheListView.Thisvaluecannotbenull.*这个构造函数将导致底层数据集合是不可变的，因此clear()等方法将抛出异常。*/

        sp_dropdown.setAdapter(learingSiteAdapter); //设置下拉框的数组适配器

         sp_dropdown.setSelection(0); //设置下拉框默认显示第一项

         //给下拉框设置选择监听器，一旦用户选中某一项，就触发监听器的onItemSelect方法

         sp_dropdown.setOnItemSelectedListener(onItemSelectedListener);

     }
     //初始化对话框样式的列表框
    private  void intiDialogSpinner(){
        //从数组资源文件array.xml中获得元素
        playSiteArray =getResources().getStringArray(R.array.palySites);

        //从布局文件中获取名叫sp_dialog的下拉框
        Spinner sp_dialog=(Spinner) findViewById(R.id.sp_dialog);
        //设置下拉框的标题。对话框模式才显示标题，下拉模式不提示标题
        sp_dialog.setPrompt("请选择运动场所");

        //声明一个下拉列表的数组适配器
        ArrayAdapter<String> palySitesAdapter=new ArrayAdapter<String>(this, R.layout.item_select,playSiteArray);
//未选择时的处理方法，通常无需关注
        sp_dialog.setAdapter(palySitesAdapter);//设置下拉框的数组适配器
        sp_dialog.setOnItemSelectedListener(onItemSelectedListener);

    }
    //定义一个选择监听器，实现了接口OnItemSelectedListener
    private AdapterView.OnItemSelectedListener onItemSelectedListener=new AdapterView.OnItemSelectedListener(){
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
             //选择事件的处理方法，其中position代表选择项的序号
            switch (view.getId())
            {
                case R.id.sp_dropdown:
                    resultText.setText("学习在"+learningSiteArray[position]);
                    break;
                case R.id.sp_dialog:
                    resultText.setText("运动在"+playSiteArray[position]);
                    break;
            }
        }
        //未选择时的处理方法，通常无需关注
        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    };


}
